import { getQiKeDateOption } from "./qikeDateOption";
import { getSanChuan } from "./sanchuan";
import { getAllShenSha }  from "./shensha";
import {
  getXunShou,
  getDizhiIdex,
  getTianganIndex,
  getLiuQinByGanZhi,
} from "./dateUtils";
class GongConfig {
  constructor(guiShen, dunGan) {
    this.guiShen = guiShen;
    this.dunGan = dunGan;
  }
}
class Gong {
  constructor(index, name, config) {
    this.config = config;
    this.name = name; // Default name to "Gong" if not provided
    this.index = index; // Default index to 0 if not provided
  }
}
class Sike {
  constructor(diyike, dierke, disanke, disike) {
    this.diyike = diyike;
    this.dierke = dierke; // Default index to 0 if not provided
    this.disanke = disanke;
    this.disike = disike; // Initialize an empty array for entities
  }
}
class GuiShen {
  constructor(jianCheng, name, value, discribe) {
    this.name = name; // Default name to "GuiShen" if not provided
    this.discribe = discribe; // Default config to an empty object if not provided
    this.jianCheng = jianCheng; // Default index to 0 if not provided
    this.value = value;
  }
}

let zi = new Gong(
  0,
  `子`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let chou = new Gong(
  1,
  `丑`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let yin = new Gong(
  2,
  `寅`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let mao = new Gong(
  3,
  `卯`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let chen = new Gong(
  4,
  `辰`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let si = new Gong(
  5,
  `巳`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let wu = new Gong(
  6,
  `午`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let wei = new Gong(
  7,
  `未`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let shen = new Gong(
  8,
  `申`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let you = new Gong(
  9,
  `酉`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let xu = new Gong(
  10,
  `戌`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);
let hai = new Gong(
  11,
  `亥`,
  new GongConfig(new GuiShen("贵", "贵神", "描述"), "甲")
);

let dipan = [zi, chou, yin, mao, chen, si, wu, wei, shen, you, xu, hai];
console.log("未初始化的地盘");
console.log(dipan);

let guiShens = [
  new GuiShen(
    "贵",
    "贵人",
    "己丑",
    "天乙贵人是中国传统命理学中的一种吉神，代表着吉祥、幸运和帮助。"
  ),
  new GuiShen(
    "蛇",
    "腾蛇",
    "丁巳",
    "天德贵人是中国传统命理学中的一种吉神，象征着天赐的恩惠和庇佑。"
  ),
  new GuiShen(
    "雀",
    "朱雀",
    "丙午",
    "天德贵人是中国传统命理学中的一种吉神，象征着天赐的恩惠和庇佑。"
  ),
  new GuiShen(
    "合",
    "六合",
    "乙卯",
    "天空贵人是中国传统命理学中的一种吉神，象征着广阔的天地和无限的可能。"
  ),
  new GuiShen(
    "勾",
    "勾陈",
    "戊辰",
    "天喜贵人是中国传统命理学中的一种吉神，象征着喜庆和幸福。"
  ),
  new GuiShen(
    "青",
    "青龙",
    "甲寅",
    "天喜贵人是中国传统命理学中的一种吉神，象征着喜庆和幸福。"
  ),
  new GuiShen(
    "空",
    "天空",
    "戊戌",
    "天喜贵人是中国传统命理学中的一种吉神，象征着喜庆和幸福。"
  ),
  new GuiShen(
    "虎",
    "白虎",
    "庚申",
    "天喜贵人是中国传统命理学中的一种吉神，象征着喜庆和幸福。"
  ),
  new GuiShen(
    "常",
    "太常",
    "己未",
    "天喜贵人是中国传统命理学中的一种吉神，象征着喜庆和幸福。"
  ),
  new GuiShen(
    "玄",
    "玄武",
    "癸亥",
    "天喜贵人是中国传统命理学中的一种吉神，象征着喜庆和幸福。"
  ),
  new GuiShen(
    "阴",
    "太阴",
    "辛酉",
    "天福贵人是中国传统命理学中的一种吉神，象征着幸福和富足。"
  ),
  new GuiShen(
    "后",
    "天后",
    "壬子",
    "天后贵人是中国传统命理学中的一种吉神，象征着女性的智慧和慈爱。"
  ),
];

function getLiuRenShenKeOptions(qkdtopt) {
  let gongs = [...dipan]; // 复制地盘数组
  let yueJiang = getDizhiIdex(qkdtopt.yueJiang.value);
  let hour = getDizhiIdex(qkdtopt.ganzhiDatetime.hour[1]);
  let xunDun = [
    "甲",
    "乙",
    "丙",
    "丁",
    "戊",
    "己",
    "庚",
    "辛",
    "壬",
    "癸",
    "○",
    "○",
  ];
  //添加神煞
  let shenSha = getAllShenSha(qkdtopt.ganzhiDatetime);
  gongs.forEach((gong) => {
    gong.config.shenSha = shenSha[gong.name];

  });

  let gongCha = yueJiang - hour; // 计算宫差
  

console.log("宫差" + gongCha);
  let absGongCha = Math.abs(yueJiang - hour);
  let xunShouDizhi = getXunShou(qkdtopt.ganzhiDatetime.day);
  let xunShouDizhiIndex = gongs.findIndex((gong) => gong.name == xunShouDizhi);
  gongs = insertDunganArr(gongs, xunShouDizhiIndex, xunDun,absGongCha);

  
  if (gongCha <= 0) {
    for (let i = 0; i < absGongCha; i++) {
      rotateRightInPlace(gongs);
    }
  } else {
    for (let i = 0; i < absGongCha; i++) {
      rotateLeftInPlace(gongs);
    }
  }

  initShenPan(
    qkdtopt.ganzhiDatetime.day[0],
    qkdtopt.ganzhiDatetime.day[1],
    qkdtopt.zhouyeGui,
    gongCha,
    gongs
  );
  let sike = initSiKe(
    gongs,
    gongCha,
    qkdtopt.ganzhiDatetime.day[0],
    qkdtopt.ganzhiDatetime.day[1]
  );
  console.log("四课初始化完成");
  let lrkKey = getLrkKey(qkdtopt.ganzhiDatetime.day[0], sike);
  let sc = getSanChuan(qkdtopt.sheHaiType, qkdtopt.ganzhiDatetime.day,sike.diyike[1].name);
  console.log("三传" + sc);
  let sanChuan = initSanChuan(qkdtopt.ganzhiDatetime.day[0], sc, gongs);
  // console.log(gongs);
  return {
    tianDiPan: gongs,
    siKe: sike,
    sanChuan: sanChuan,
    lrkey: lrkKey,
    dipan: dipan,
  };
}
function initSiKe(tianPan, gongCha, riGan, riZhi) {
  let diyikeKey = "寅";
  if (riGan == "甲") {
    diyikeKey = "寅";
  } else if (riGan == "乙") {
    diyikeKey = "辰";
  } else if (riGan == "丙" || riGan == "戊") {
    diyikeKey = "巳";
  } else if (riGan == "丁" || riGan == "己") {
    diyikeKey = "未";
  } else if (riGan == "庚") {
    diyikeKey = "申";
  } else if (riGan == "辛") {
    diyikeKey = "戌";
  } else if (riGan == "壬") {
    diyikeKey = "亥";
  } else if (riGan == "癸") {
    diyikeKey = "丑";
  }
  let diyike = [];
  let dierke = [];
  let disanke = [];
  let disike = [];
  let diyikeDipanIndex = tianPan.findIndex((gong) => gong.name == diyikeKey);
  let diyikeDipan = tianPan.find((gong) => gong.name == diyikeKey);
  diyikeDipan.config.riYuan = riGan;
  let diyikeTianpan = quShangShen(tianPan, gongCha, diyikeDipanIndex);
  diyike.push(diyikeDipan);
  diyike.push(diyikeTianpan);
  dierke.push(diyikeTianpan);
  console.log("di1111111ke ----");
  console.log(diyike);

  let dierkeDipanIndex = tianPan.findIndex(
    (gong) => gong.name == diyikeTianpan.name
  );
  console.log("第二课地盘索引" + dierkeDipanIndex);

  let dierkeTianpan = quShangShen(tianPan, gongCha, dierkeDipanIndex);
  dierke.push(dierkeTianpan);
  let disankeDipanIndex = tianPan.findIndex((gong) => gong.name == riZhi);
  let disankeDipan = tianPan.find((gong) => gong.name == riZhi);
  let disankeTianpan = quShangShen(tianPan, gongCha, disankeDipanIndex);
  disanke.push(disankeDipan);
  disanke.push(disankeTianpan);
  let disikeDipanIndex = tianPan.findIndex(
    (gong) => gong.name == disankeTianpan.name
  );
  let disikeTianpan = quShangShen(tianPan, gongCha, disikeDipanIndex);
  disike.push(disankeTianpan);
  disike.push(disikeTianpan);
  let sike = new Sike(diyike, dierke, disanke, disike);
  console.log("四课");
  console.log(sike);
  return sike;
}
function quShangShen(tianPan, gongCha, dipanIndex) {
  let shangShen;
  let absGongCha = Math.abs(gongCha);
  if (gongCha >= 0) {
    console.log("gongCha大于等于0");

    if (dipanIndex + absGongCha <= 11) {
      shangShen = tianPan[dipanIndex + absGongCha];
    } else {
      shangShen = tianPan[dipanIndex + absGongCha - 12];
    }
  } else {
    console.log("gongCha小于0");

    if (dipanIndex + 12 - absGongCha > 11) {
      shangShen = tianPan[dipanIndex + 12 - absGongCha - 12];
    } else {
      shangShen = tianPan[dipanIndex - absGongCha + 12];
    }
  }
  return shangShen;
}
function initShenPan(riGan, riZhi, type, gongCha, gongs) {
  let jiawugeng = ["丑", "未"];
  let yiji = ["子", "申"];
  let bingding = ["亥", "酉"];
  let rengui = ["巳", "卯"];
  let xin = ["午", "寅"];
  let currentGuiShen = [];
  let ye = ["子", "丑", "寅", "酉", "戌", "亥"];
  let zhou = ["卯", "辰", "巳", "午", "未", "申"];
  let shunGuiShen = [11, 0, 1, 2, 3, 4];
  let niGuiShen = [5, 6, 7, 8, 9, 10];
  if (riGan === "甲" || riGan === "戊" || riGan === "庚") {
    currentGuiShen = jiawugeng;
  } else if (riGan === "乙" || riGan === "己") {
    currentGuiShen = yiji;
  } else if (riGan === "丙" || riGan === "丁") {
    currentGuiShen = bingding;
  } else if (riGan === "壬" || riGan === "癸") {
    currentGuiShen = rengui;
  } else if (riGan === "辛") {
    currentGuiShen = xin;
  }
  if (type == "zhou") {
    let guirenStartIndex = gongs.findIndex(
      (gong) => gong.name === currentGuiShen[0]
    );
    console.log("当前的贵人位置索引" + guirenStartIndex);
    if (shunGuiShen.includes(guirenStartIndex)) {
      insertGuiRenArr(gongs, guirenStartIndex, guiShens, false);
    } else {
      insertGuiRenArr(gongs, guirenStartIndex, guiShens, true);
    }
  } else if (type == "ye") {
    let guirenStartIndex = gongs.findIndex(
      (gong) => gong.name === currentGuiShen[1]
    );
    console.log("当前的贵人位置索引" + guirenStartIndex);

    if (niGuiShen.includes(guirenStartIndex)) {
      console.log("进入神盘排盘");
      insertGuiRenArr(gongs, guirenStartIndex, guiShens, true);
    } else {
      insertGuiRenArr(gongs, guirenStartIndex, guiShens, false);
    }
  } else {
  }
}
function insertDunganArr(tianPan, position, elements,gc, reverse = false) {
  // 验证输入数组长度
  if (tianPan.length !== 12) {
    throw new Error("目标数组长度必须为12");
  }

  if (elements.length !== 12) {
    throw new Error("替换元素数组长度必须为12");
  }
  console.log("插入位置", position);

  // 处理插入位置超出范围的情况
  const startPos = position % 12;

  // 根据reverse参数决定替换顺序
  const elementsToUse = reverse
    ? [...elements].reverse() // 逆序替换
    : [...elements]; // 顺序替换
  console.log(elementsToUse);

  // 创建临时数组存储替换后的结果
  const tempArray = new Array(12);
  // console.log(tempArray);

  // 从startPos开始，循环替换元素

  for (let i = 0; i < 12; i++) {
    tempArray[(startPos + i) % 12] = elementsToUse[i];
  }
 let lki = [];
  // 将临时数组复制回原数组
  for (let i = 0; i < 12; i++) {
    tianPan[i].config.dunGan = tempArray[i];
    tianPan[i].dunGan = tempArray[i];
    tianPan[i].luoKong = false;
    if (tempArray[i] == "○") {
      tianPan[i].kongWang = true;
      lki.push(i);
      // tianPan[i + 1].luoKong = true;
    } else {
      tianPan[i].kongWang = false;
      // tianPan[i + 1].luoKong = false;
    }
  
  }
  lki.forEach((index) => {
    if (index + gc <= 11) {
      tianPan[index + gc].luoKong = true;
    } else {
      tianPan[index + gc - 12].luoKong = true;
     }
  });
  
  return tianPan;
}
function insertGuiRenArr(tianPan, position, elements, reverse = false) {
  // 验证输入数组长度
  if (tianPan.length !== 12) {
    throw new Error("目标数组长度必须为12");
  }

  if (elements.length !== 12) {
    throw new Error("替换元素数组长度必须为12");
  }

  // 处理插入位置超出范围的情况
  const startPos = position % 12;

  // 根据reverse参数决定替换顺序
  const elementsToUse = reverse
    ? [...elements].reverse() // 逆序替换
    : [...elements]; // 顺序替换

  // 创建临时数组存储替换后的结果
  const tempArray = new Array(12);
  console.log(tempArray);

  // 从startPos开始，循环替换元素

  if (reverse) {
    for (let i = 0; i < 12; i++) {
      tempArray[(startPos + i + 1) % 12] = elementsToUse[i];
    }
  } else {
    for (let i = 0; i < 12; i++) {
      tempArray[(startPos + i) % 12] = elementsToUse[i];
    }
  }

  // 将临时数组复制回原数组
  for (let i = 0; i < 12; i++) {
    tianPan[i].config.guiShen = tempArray[i];
    tianPan[i].guiShen = tempArray[i]
    // console.log("------------");
    // console.log(tianPan[i].config.guiShen);
  }

  return tianPan;
}

function  rotateRightInPlace(arr) {
  if (arr.length <= 1) return;
  const last = arr[arr.length - 1]; // 保存末元素
  for (let i = arr.length - 1; i > 0; i--) {
    arr[i] = arr[i - 1]; // 元素向后移动一位
  }
  arr[0] = last; // 末元素放到首位
}

function rotateLeftInPlace(arr) {
  if (arr.length <= 1) return;
  const first = arr[0]; // 保存首元素
  for (let i = 0; i < arr.length - 1; i++) {
    arr[i] = arr[i + 1]; // 元素向前移动一位
  }
  arr[arr.length - 1] = first; // 首元素放到末尾
}

// function getLiuRenShenKeOptions(qiKeDatetimeOption) {
//   let qkdtopt = getQiKeDateOption();
//   let yueJiang = getDizhiIdex(qkdtopt.yueJiang.value);
//   let hour = getDizhiIdex(qkdtopt.ganzhiDatetime.hour[1]);

//   initTianPan(yueJiang, hour, dipan);
// }
function getLrkKey(tinagan, sike) {
  let k0 = getTianganIndex(tinagan);
  let k1 = sike.diyike[1].index;
  let k2 = sike.dierke[1].index;
  let k3 = sike.disanke[0].index;
  let k4 = sike.disanke[1].index;
  let k5 = sike.disike[1].index;
  return `lrk${k0}${k1}${k2}${k3}${k4}${k5}`;
}
function initSanChuan(riGan, sc, gongs) {
  let sc1 = sc[0];
  let sc2 = sc[1];
  let sc3 = sc[2];
  let scG1 = gongs.find((gong) => gong.name == sc1);
  let scG2 = gongs.find((gong) => gong.name == sc2);
  let scG3 = gongs.find((gong) => gong.name == sc3);
  scG1.config.liuQin = getLiuQinByGanZhi(riGan, sc1);
  scG2.config.liuQin = getLiuQinByGanZhi(riGan, sc2);
  scG3.config.liuQin = getLiuQinByGanZhi(riGan, sc3);
  let sanChuan = [];
  sanChuan.push(scG1);
  sanChuan.push(scG2);
  sanChuan.push(scG3);
  console.log("三传");
  console.log(sanChuan);
  return sanChuan;
}

function shenZhiKeYing(神, 支) {
  return {
    贵: {
      子: "贵人居子曰解纷:解纷必嘱事于童仆，言解除纷纭扰攘也。盖子乃夜半安居之神，故得解去纷扰而坦腹。然既为至贵，日有万机，虽无君象，贵臣宰辅代天宣化事，亦同天子之劳，恐其繁芜脱漏，故嘱委于有用之童仆，庶不负国瘼民矣。",
      丑: "贵人居丑曰升堂:升堂宜投书于公府，乃本位属己丑故也，升堂则有泰山岩岩之象，非可私干，必欲见之，宜持书或移文，必以正大光明，然后可于公堂府第见之。",
      寅: "贵人居寅曰凭几:凭几可谒见于家，盖功曹乃案牍碎琐之象，贵人有暇必亲于典籍也。当此有可乘之机，虽细务亦可相干，可就私第谒之，而非公堂之比也。",
      卯: "贵人居卯曰登车:登车宜诉词于路，卯乃轩车之象，既升车则非私家又非公署，若非急紧之事，岂可唐突于贵人之前耶？若误被屈或遭豪暴，非陈诉于有位之正人，何得雪斯沉辱哉？不得不俯于路而哀达其情也。",
      辰: "贵人居辰曰天牢:辰戌怀怒兮下忧上辱，非法之地，必非法之人，而后入之，何贵人而居此乎？文王羑里亦莫非天所使耳。在上者有此非常之辱，则俯仰于彼者，乌得不忧乎？",
      巳: "贵人居巳曰受贡:巳午受贡兮君喜臣欢，乃相生助，而非不遂之方，既贡则以贱事贵，以贵下贱，君喜臣悦，忘其授受之私，贡者受者俱不越度之象也。",
      午: "贵人居午曰受贡:巳午受贡兮君喜臣欢，乃相生助，而非不遂之方，既贡则以贱事贵，以贵下贱，君喜臣悦，忘其授受之私，贡者受者俱不越度之象也。",
      未: "贵人居未曰列席:列席则有酒筵之娱，盖未乃夜贵，二贵相会，贵入贵家，故有宴会之象。托贵以干贵事无不遂矣。",
      申: "贵人居申曰移途:移途则有求干之荣，盖传送乃道路之神，贵人在道嬉戏游衍时也，因而获便以求其进用之私，乘间而行，必荣遂矣。",
      酉: "贵人居酉曰入私室:入私室不遑宁处，盖酉为日月出入之门，有私门之号也。夫贵人达而在上，致君、泽民、律身、行已，自当持以至公，难进易退。趋谒于私门则律己不正，而清论所不容矣，岂遑宁处耶？",
      戌: "贵人居戌曰天牢:辰戌怀怒兮下忧上辱，非法之地，必非法之人，而后入之，何贵人而居此乎？文王羑里亦莫非天所使耳。在上者有此非常之辱，则俯仰于彼者，乌得不忧乎？",
      亥: "贵人居亥曰还绛宫:还绛宫坦然安居，又曰登天门，此时六凶俱藏。盖螣蛇朱雀之火而伏于水，勾陈天空之土而伏于木，白虎之金而伏于火，玄武之水而伏于土，且亥乃夜方，日之劳扰者至此而坦然安居矣。",
    },
    蛇: {
      子: "螣蛇居子曰掩目:掩目则无患无忧，不惟子水克螣蛇之巳火，而居夜方有掩目之象。蟠伏栖息之时，其凶焰无所施，无患无忧矣。",
      丑: "螣蛇居丑曰蟠龟:蟠龟则祸消福善，盖丑中有暗禽星龟也。夫蛇与龟姤亦离坎交济之象。岂复有祸心于人哉？是以祸消，占者修善以立身，斯福不穷也。",
      寅: "螣蛇居寅曰生角:生角露齿祸福两途，盖火生于寅，荣旺之极，化蛟化龙，此为之基，贪荣不祸，是以为福。",
      卯: "螣蛇居卯曰当门:当门而衔剑总是成灾，卯乃日月之门，蛇当门，则出门即被其害。然有备者无害也。得此者预为之计，则不待彼奋起而攻其不意。若趋而不顾，斯堕其害矣。",
      辰: "螣蛇居辰曰象龙:入冢而象龙并为释难，蛇乃龙之从也，有化之机，若入龙之窟，有随进化之义。夫彼贪上达必热于中，岂复深为我患哉？故可释难。",
      巳: "螣蛇居巳曰乘雾:乘雾飞空休祥不辨，以雾为隐，虽毒目无所见，毒不得肆身，得此者仍宜避之。盖雾之蒙，彼固目迷矣，而我至此独不迷哉？倘误犯之，为其所噬，悔何及矣。",
      午: "螣蛇居午曰飞空:乘雾飞空休祥不辨，以蛇飞空，化龙化蜃之象也。彼有此大志始有此大为，岂复毒人？纵彼不毒，在我仍宜避之，斯不失为明哲。",
      未: "螣蛇居未曰入林:入林兮锋不可砍，入林兮锋不可砍未乃木墓，以土有木，非林之象乎？林麓栖止，既有所蔽，其穴必深，虽有刀锋无所施其利也。彼螣蛇有此优游之乐，必无肆祸之心，占者无所忌矣。然逢林有蛇，还当莫入。",
      申: "螣蛇居申曰衔剑:当门而衔剑总是成灾，申，金刃之象也。金刃乃斩彼之物，而胡为彼所衔哉？盖火能克金，得以猖獗逞妖，衔剑盖异且妖之象。占得者惟退潜而避之，彼凶不能久，妖氛息而吾复何患哉？",
      酉: "螣蛇居酉曰露齿:生角露齿祸福两途，盖火制金乡，猖獗得志之地，且金石空地无食，彼蛇肆毒贪饕，求口腹之计，为祸岂浅？得此者退藏于密可也。",
      戌: "螣蛇居戌曰入冢:入冢而象龙并为释难，戌乃火库墓也，有蛇入墓之象。彼深居而简出，吾往过虽不免小心惴惴，而彼非蟠伏路途之比也。",
      亥: "螣蛇居亥曰坠水:坠水兮从心无患，蛇能水居，则随波逐流，鱼虾为食，似无横路毒人之欲也。在我则任其往返周旋，岂不从心所欲哉？",
    },
    雀: {
      子: "朱雀居子曰损羽:损羽也自伤难进，朱雀乃丙午火，而加临水乡，有损羽之象，羽翼不成，进飞必难矣，占得此者文书无气，而口舌词讼不凶也。",
      丑: "朱雀居丑曰掩目:掩目也动静得昌，丑亦北方水气之余，制朱雀之火，有投江破头之喻。盖彼既目瞑，吾得有为矣。动静俱吉，无口舌之扰，讼息而文书不行也。",
      寅: "朱雀居寅曰安巢:安巢兮迟滞沉溺，盖二木皆火生助之神，且有山林之象，雀至山林结巢砌垒，育子贪荣。占者所喜，有口舌消亡之义，而曰迟滞沉溺者，盖卜文书章奏之事，则未免之淹滞而沉溺也。",
      卯: "朱雀居卯曰安巢:安巢兮迟滞沉溺，盖二木皆火生助之神，且有山林之象，雀至山林结巢砌垒，育子贪荣。占者所喜，有口舌消亡之义，而曰迟滞沉溺者，盖卜文书章奏之事，则未免之淹滞而沉溺也。",
      辰: "朱雀居辰曰投网:投网兮乖错遗忘，辰戌名天罗地网，而戌为朱雀火之库，而辰与戌对宫，有丘墓之象，故曰投网。夫朱雀之凶，入此不得飞扬，占者之所喜也。故曰乖错遗忘，亦指文书之事言之耳。",
      巳: "朱雀居巳曰昼翔:音信至都缘昼翔，以巳未交午乃白昼之象。雀至此，最为有气，占凶则口舌词讼，占喜则起用文书，望人信息俱至。",
      午: "朱雀居午曰衔符:励嘴衔符怪异经官语讼，古名真朱雀，有非细之讼，常人之忧也，若士子入场，斯高中矣。",
      未: "朱雀居未曰临坟:临坟入水悲哀且在鸡窗，言其结巢于古墓之象。夫巳午未申俱在上，有飞空而翱翔之义。朱雀得肆时也。主口舌不细，故曰悲哀，妻孥乌有不悲者哉？",
      申: "朱雀居申曰励嘴:励嘴衔符怪异经官语讼，申，金也，朱雀至此能克制其方得志之处也。励嘴奋啄，所以口舌尤旺也。望文书固有气，而他占则讼诉之象，凶不可免矣。",
      酉: "朱雀居酉曰夜噪:官灾起盖因夜噪，亦火制金乡，得以奋志为恶，其性好乱，便生口舌，得此者必官非不免。又且酉为门户，口舌入门，非官灾而何？",
      戌: "朱雀居戌曰投网:投网兮乖错遗忘，辰戌名天罗地网，而戌为朱雀火之库，而辰与戌对宫，有丘墓之象，故曰投网。夫朱雀之凶，入此不得飞扬，占者之所喜也。故曰乖错遗忘，亦指文书之事言之耳。",
      亥: "朱雀居亥曰入水:临坟入水悲哀且在鸡窗，火入水乡有投江之象，乃甚喜矣。凶神无气何曰哀悲。盖亦指文书动用而言耳。若有急用文词不能得用，亦悲也。",
    },
    合: {
      子: "六合居子曰反目:反目兮无礼之事端，子水也，六合木，本相生助，何乃曰反目也？盖子卯无礼之刑也。凡事必起于无礼，以致彼此不投而有反目之失。",
      丑: "六合居丑曰妆严:纳采妆严总是欲成之例，六合临丑乃贵之本垣也，以贱谒贵，妆饰不得不严，所以事上也。",
      寅: "六合居寅曰乘轩:乘轩结发从媒妁而成欢，盖寅木乃轩车之象，故曰乘轩。申乃庚也，卯乃乙也，乙庚相合故曰结发。以从媒妁之言而有欢成之庆矣。",
      卯: "六合居卯曰入室:升堂入室并为已就之占，午乃离位，似为升堂。卯则六合之本位，故似入室。二者合于堂合于室，岂非已就乎？凡占得此，皆可成遂。",
      辰: "六合居辰曰违理:违理亡羞因妄冒而加罪，盖六合本属乙卯，卯辰有六害之凶，故曰违理。若临戌，则以己之私门而自就戌，以为六合苟求合会，亡羞之似。占得此者，必因自不检约，以招罪愆，非干人之害我也。",
      巳: "六合居巳曰不谐:盖六合木也，入于火乡，烟灭灰飞，不吉甚矣。凡占忧惧不免。",
      午: "六合居午曰升堂:升堂入室并为已就之占，午乃离位，似为升堂。卯则六合之本位，故似入室。二者合于堂合于室，岂非已就乎？凡占得此，皆可成遂。",
      未: "六合居未曰纳采:纳采妆严总是欲成之例，六合居未乃卯未有相合之庆，且太常酒食帛物之乡，似纳采之喜也。占得之者，何事不可成耶。",
      申: "六合居申曰结发:乘轩结发从媒妁而成欢，盖寅木乃轩车之象，故曰乘轩。申乃庚也，卯乃乙也，乙庚相合故曰结发。以从媒妁之言而有欢成之庆矣。",
      酉: "六合居酉曰私窜:私窜兮不明之囚地，以卯酉为私门，而六合又乙卯之属，以私并私，以门复门，乃出入私门逃窜之象。且六合之木而临从魁之金，木受金伤，故曰囚地重复私阴，故曰不明。得此者惟奸淫阴私是利，而正大反殃也。",
      戌: "六合居戌曰亡羞:违理亡羞因妄冒而加罪，盖六合本属乙卯，卯辰有六害之凶，故曰违理。若临戌，则以己之私门而自就戌，以为六合苟求合会，亡羞之似。占得此者，必因自不检约，以招罪愆，非干人之害我也。",
      亥: "六合居亥曰待命:亥乃天门也，我欲成就公私事端来天门之下，待命必成，故曰和同。",
    },

    勾: {
      子: "勾陈居子曰投机:遇受越投机被辱暗遭毒害，若至子，乃土能克制之，适所以投其狂妄之机，尤可以展布其奋忿之心。占得之者，亦惟忍而已矣。",
      丑: "勾陈居丑曰受越:遇受越投机被辱暗遭毒害，丑乃贵人之乡，以争神而入贵地，乃受其迈越之讼诉而勾陈得肆其侮于人也。",
      寅: "勾陈居寅曰遭囚:遭囚兮宜上书，勾陈遇寅乃克制之方，故有遭囚之象。宜上书者，彼凶既囚，而我得以上言告发其积害成愆之状。若不于此时制之，则过此仍肆虐而物受其害矣。",
      卯: "勾陈居卯曰临门:临门兮家不和，卯本日月之门，而勾陈争斗之神入之，是争神进门矣，必家不和，以致抢攘纷更，人眷非宁，盖亦破败之征矣。",
      辰: "勾陈居辰曰升堂:升堂有狱吏以勾连，勾陈本属戊辰而入辰非升堂而何，其神主斗讼勾连，故至辰地则有狱吏勾连之应，知机君子生平无非礼之举，不过因他人之不法而及之耳。",
      巳: "勾陈居巳曰捧印:捧印兮有封拜，巳乃铸印之方，而勾陈铸印之模范也，印铸而成，捧以奉上，非封拜之象乎？君子见之，迁擢必速，常人见之，反为可忧，自非有不法等情，何干于印信也？",
      午: "勾陈居午曰反目:反目因他人而逆戾，午火生勾陈而何曰反目耶？以勾陈好斗讼而午火真朱雀，尤讼之最者也。彼此皆反面相贼之神，孰肯相容耶？故有反目之象。君子占之，必被他人之逆戾，余波以及之耳。",
      未: "勾陈居未曰入驿:入驿下狱往来词讼稽留，未乃垣途，如驿道也，故曰入驿。",
      申: "勾陈居申曰趋户:趋户褰裳反复勾连改革，夫申非门户之神，何以趋户目之？盖申前即酉户也，立此可以入门，故曰趋户。",
      酉: "勾陈居酉曰披刃:披刃兮身遭责，以酉金似为凶器矣，况又阴爻肃煞之气，与勾陈之戊辰生合，彼凶斗之神而持此器，岂有善念哉？然非理之举，法所不容，终于遭责，占者惟避其凶可也。",
      戌: "勾陈居戌曰下狱:入驿下狱往来词讼稽留，戌乃地网，又曰地狱，况与勾陈之戊辰对相冲射，乃下狱之象也。非词讼之往来而何？占者惟退避则吉。",
      亥: "勾陈居亥曰褰裳:趋户褰裳反复勾连改革，至亥而褰裳者，亥方夜静更阑，必褰衣而酣息，然曰勾陈反复者，申为坤地户也，亥为干天门也。门户之前何立此等凶神，君子至此，即返而抽身，稍迟则被彼勾执矣。",
    },
    青: {
      子: "青龙居子曰入海:入海游江因动有非常之庆，盖俱水也，青龙得水，何吉不生？吉福斯民，占者动则有非常之庆矣。",
      丑: "青龙居丑曰在陆:在陆蟠泥所谋未遂，丑近北坎之水，故为泥。夫龙飞于九天，潜于九渊，神变化而莫测也。若失地亦厄且困矣。蟠于泥，在于陆非失地而何，欲望其遂也难矣。",
      寅: "青龙在寅曰乘云:乘云驱雷利以经营，寅乃青龙之宫，有乘云出入之象，古谓云从龙也。卯乃震卦，震为雷也，龙得云雷，非经营之时乎？故乘云而得以施为展布。",
      卯: "青龙居卯曰驱雷:乘云驱雷利以经营，卯乃震卦，震为雷也，龙得云雷，非经营之时乎？故驱雷而得以施为展布。",
      辰: "青龙居辰曰飞天:飞天兮君子欲动，以辰乃龙庭也，而曰天者，戌亥子丑象地在下也，辰巳午未象天在上也，故曰飞天也。青龙吉神，飞腾在上，君子有为之时也，非欲动乎？",
      巳: "青龙居巳曰掩目:烧身掩目因财有不测之忧，以青龙之木，得水为喜，而见火为仇，巳上入蛇穴，尤为不吉，故有掩目之象。青龙有此不足，尚可赖之为财神欤？若求谋财物则有莫测之忧矣。",
      午: "青龙居午曰烧身:烧身掩目因财有不测之忧，以青龙之木，得水为喜，而见火为仇。午乃南离真火，故曰烧身，青龙有此不足，尚可赖之为财神欤？若求谋财物则有莫测之忧矣。",
      未: "青龙居未曰在陆:在陆蟠泥所谋未遂，未近南离之火，故为陆。夫龙飞于九天，潜于九渊，神变化而莫测也。若失地亦厄且困矣。蟠于泥，在于陆非失地而何，欲望其遂也难矣。",
      申: "青龙居申曰伤鳞:伤鳞摧角宜乎安静，申乃阳金，金能克木，青龙之甲寅所深畏也。至此有退鳞折角之象。吉神遭厄，岂福佑于我也，惟安居守静而已。",
      酉: "青龙居酉曰摧角:伤鳞摧角宜乎安静，酉乃阴金，金能克木，青龙之甲寅所深畏也。至此有退鳞折角之象。吉神遭厄，岂福佑于我也，惟安居守静而已。",
      戌: "青龙居戌曰登魁:登魁兮小人争财，戌乃河魁也，以青龙之吉神而入网罗之地，则小人争财之象矣。由财喜之神落此，所以致小人之争也。",
      亥: "青龙居亥曰游江:入海游江因动有非常之庆，盖俱水也，青龙得水，何吉不生？吉福斯民，占者动则有非常之庆矣。",
    },
    空: {
      子: "天空居子曰伏室:患生于妇女，子乃神后、妇人居室，诈神临之，知患生于妇女。",
      丑: "天空居丑曰侍侧:诈尊长之言，丑为贵人，小人侍侧，必有欺诈尊长之言。",
      寅: "天空居寅曰被制:寅为功曹，乃道人长者之属，必不为小人所欺，反为所制。",
      卯: "天空居卯曰乘侮:卯为门户，小人临门，且合中带克，谨防有欺诈小人，变为暴客造成伤害。",
      辰: "天空居辰曰凶恶:辰为天罡凶神，成加辰，以凶加凶，所以说凶恶在辰。谨防有欺诈小人。",
      巳: "天空居巳曰受辱:太乙，官中有双女，专主斗争口舌，小人临此，受辱未免。然终有相生之意也，未至于大害。",
      午: "天空居午曰识字:午乃日中，离照当空，小人面目在光天化日之下，易被识也。",
      未: "天空居未曰趋进:起货财之利，未为酒食粟帛之地，天空临之，戌能刑未，故得以趋进而起贪欲之心，主诓赚得财。",
      申: "天空居申曰鼓舌:申者主声音，为舌辨之神，诈神至此，鼓唇弄舌，真伪难分。",
      酉: "天空居酉曰巧说:酉为唇舌，天空加此，必为巧说。凡事主隐匿，巧言奸诈，亦主奴婢走失，奸淫。",
      戌: "天空居戌曰居家:事因于奴婢。戌乃天空本位，奴婢小人得志，故知事因于奴婢。",
      亥: "天空居亥曰诬词:亥为天门，虚诈之神至此，必有诬词以达上听，主多陷于小人的圈套，或奸人的诡计。纵有小利，亦会有遗失之事。",
    },
    虎: {
      子: "白虎居子曰溺水:溺水音书不至，白虎喜山林，主道路，今溺陷于水，则道路不通，不凶矣。盖至凶之神而陷没，有何不利？勿以道路阻而音不达为忌。",
      丑: "白虎在丑曰在野:在野兮损坏牛羊，丑未田野之象，白虎在此固似无威，而丑中之牛，未中之羊，为虎所噬，贪哺啜无复凶矣。",
      寅: "白虎居寅曰登山:登山掌生杀之权，其威自倍，仕途占之，当有生杀之重柄。常人占之，凶不可当。",
      卯: "白虎居卯曰临门:临门兮伤折人口，白虎守卯酉之门，则一家惊惧不宁矣。轻出无备者莫不为之噬矣，故伤折人口也。",
      辰: "白虎居辰曰咥人:咥人有害终不见乎休祥，辰申有尸，乃虎噬尸，既曰咥人，岂复有吉祥于人耶？得此凶占，亦惟避之而已矣。",
      巳: "白虎居巳曰焚身:焚身祸害反昌，在彼白虎之金，固所畏忌，而占者反昌矣。何则？白虎丧凶血光之神，既已焚身，何能为患？",
      午: "白虎居午曰焚身:焚身祸害反昌，在彼白虎之金，固所畏忌，而占者反昌矣。何则？白虎丧凶血光之神，既已焚身，何能为患？",
      未: "白虎在未曰在野:在野兮损坏牛羊，丑未田野之象，白虎在此固似无威，而丑中之牛，未中之羊，为虎所噬，贪哺啜无复凶矣。",
      申: "白虎居申曰衔牒:衔牒无凶主可持其喜信，申乃白虎之本宫，彼贪其巢穴之荣，而无复肆噬之心，故有喜信可持，而曰衔牒者，传送乃往来之神，牒信之象也。",
      酉: "白虎居酉曰临门:临门兮伤折人口，白虎守卯酉之门，则一家惊惧不宁矣。轻出无备者莫不为之噬矣，故伤折人口也。",
      戌: "白虎居戌曰落井:落阱脱桎梏之殃，戌乃地狱，吉神入之则占者必凶，凶神入之则凶焰猥衰，不复孔炽，占者不被其殃，往返无虎截路，犹桎梏之脱也。",
      亥: "白虎居亥曰溺水:溺水音书不至，白虎喜山林，主道路，今溺陷于水，则道路不通，不凶矣。盖至凶之神而陷没，有何不利？勿以道路阻而音不达为忌。",
    },
    常: {
      子: "太常居子曰遭枷:遭枷必值决罚，土值水乡，有崩陷之象，又子未六害，以害而陷，有枷锁之象。所以必值决罚。",
      丑: "太常居丑曰受爵:衔杯受爵不转职而迁官，丑乃天乙之宫，以太常而拜至尊，非受爵乎？故曰迁官也。",
      寅: "太常居寅曰侧目:侧目须遭谗佞，寅木克制太常之土，有虎豹在山之势，而太常之土何敢与为敌耶？况未羊逢虎，受其制伏，敢怒不敢言，亦惟侧目而已矣，尚畏有谗佞于傍谮之，则凶仍不免。",
      卯: "太常居卯曰遗冠:遗冠也财物遭伤，以冠裳之神而入私门，有冠不正之象，故曰遗冠。然何以曰财物遭伤？太常亦主财物衣帛，主失去者，以土被卯木之克也。",
      辰: "太常居辰曰佩印:佩印有用迁之命，辰乃天罡首领之神，而与太常印绶并之，乃佩印之义，必主迁除。",
      巳: "太常居巳曰铸印:铸印捧觞不征召而喜庆。太常为印绶之神，见巳火乃铸印之位，公器非征召不用也。",
      午: "太常居午曰乘轩:乘轩有改拜之封，午乃天地之道路，乘轩之象也。又立南向北，面君之义，故有改拜之封，君子大庆也。",
      未: "太常居未曰捧觞:铸印捧觞不征召而喜庆，未乃太常之位，宴会之宫也，捧觞酬酢有喜庆也。",
      申: "太常居申曰衔杯:衔杯受爵不转职而迁官，申为传送，太常酒食之神，二义详之，似衔杯矣。庆冠裳之象，而非转职之吉乎？",
      酉: "太常居酉曰券书:酉作券书，虽顺而防后竞，太常之未土生从魁之酉，金得助于魁则锋刃成功，宜书之左券，有何不顺耶？但酉金强自刑其方，终有后竞，勿以身贵而贱人，勿以独断而违众则吉。",
      戌: "太常居戌曰逆命:逆命也尊卑起讼，未与戌相刑，且河魁为狱网之凶，故曰逆命。未在上，其位为尊；戌在下，其位甚卑，二者相刑，非尊卑相讼乎？",
      亥: "太常居亥曰征召:亥为征召，虽喜而必下憎，亥乃天门，有征召冠裳之象。但未土在上，亥水在下，水必惮土之克也，故虽喜而下憎也。",
    },
    玄: {
      子: "玄武居子曰散发:散发有畏捕之心，子乃夜半，其睡未醒，而子鼠乃虚惊之神，况玄武贼神自多怀疑，被惊而夜起，有散发之象，怀畏捕之心，不过虚疑不害耳。",
      丑: "玄武居丑曰升堂:升堂有干求之意，丑乃天乙贵人之位，土能制水，玄武不能行盗，以礼谒见，实怀穿窬之心，有所干求，不以实对也。",
      寅: "玄武居寅曰入林:爱寅兮入林难寻，寅卯山林之地，盗贼有所凭依，捕者难以追寻，非穿窬得志乎？",
      卯: "玄武居卯曰窥户:窥户也家有盗贼，盗贼入门之象。亦惟谨之于预而已。",
      辰: "玄武居辰曰失路:愁辰兮失路自制，辰土能制玄武之水神也，至此非失路之象乎？盗贼消亡，君子坦腹之时也。",
      巳: "玄武居巳曰反顾:反顾也虚获惊悸，巳乃昼方，非盗贼之利也。纵无人追逐亦必反顾，既无追者，岂非虚惊也？",
      午: "玄武居午曰截路:截路拔剑，贼怀恶攻之而反伤，午乃天地之道路，故取象于截路。贼势至此猖獗已甚，岂宜攻之？攻之必反伤矣。",
      未: "玄武居未曰不成:不成必败于酒食之地，未乃土也，克制玄神之水，所以欲盗不成。又未，太常之家，酒食之地，必因酒而败，盗易获也。君子之庆，小人之忧。",
      申: "玄武居申曰折足:折足遭囚，贼失势擒之而可得，申乃坤土，制玄神之水，且昼方，贼所深畏，有折足之象，刚金斩贼也。贼失利矣，故捕盗贼者擒之最易。",
      酉: "玄武居酉曰拔剑:截路拔剑，贼怀恶攻之而反伤，酉阴金剑锋之象，故曰拔剑。贼势至此猖獗已甚，岂宜攻之？攻之必反伤矣。",
      戌: "玄武居戌曰遭囚:折足遭囚，贼失势擒之而可得，戌乃地狱，又土克水，故曰遭囚。二者贼失利矣，故捕盗贼者擒之最易。",
      亥: "玄武居亥曰伏藏:伏藏则隐于深邃之乡，亥乃夜方，又属玄武本位，深邃之象，捕贼者必难获也。",
    },
    阴: {
      子: "太阴居子曰垂帘:垂帘则妾妇相侮，子正北也，端门向明垂帘，昏夜无见，所以妾妇居阴位，得肆其慢上之心而欺侮之，不过群小别地生非而已。",
      丑: "太阴居丑曰入内:入内则尊贵相蒙，丑乃斗牛之墟，天乙贵人之位也，至尊而受此阴蒙则蔽其明矣。乱之始也，君子必谨焉。",
      寅: "太阴居寅曰跣足:跣足脱巾财物文书暗动，盖寅方平旦晨起之时，有跣足（赤脚）之象。然太阴之金能克寅木为财，乃财物文书俱暗中动也。",
      卯: "太阴居卯曰微行:微行执政偏宜君子之贞，卯乃私门，必袒裸之象。以入之非微行乎？君子占之，非阴神之比时，当微行也，持以贞一之操，或当执政也，亦持以贞一之操而已。",
      辰: "太阴居辰曰造庭:造庭兮宜备乖事，夫辰乃龙庭也，且与酉合，而太阴之妖媚必与天罡相得，然彼刚之眷宠必夙，亦水常无也。乌得不争宠而乖变哉？",
      巳: "太阴居巳曰伏枕:裸形伏枕盗贼口舌忧惊，巳则克制太阴，必伏不起，乃有伏枕卧病之义。并主忧疑口舌盗贼。盖巳乃螣蛇主口舌惊恐，亥乃玄武，主贼盗忧疑也。",
      午: "太阴居午曰脱巾:跣足脱巾财物文书暗动，盖午则长昼昼眠，亦必有脱巾者矣。而午则朱雀反制太阴，乃财物文书俱暗中动也。",
      未: "太阴居未曰观书:闭户观书雅称士人之政，未乃离明之次舍，土金生养，故有涵泳优游之象。安且吉也。",
      申: "太阴居申曰执政:微行执政偏宜君子之贞，申乃太阴之旺地，得志行权之所，有执政之象焉。君子占之，非阴神之比时，当微行也，持以贞一之操，或当执政也，亦持以贞一之操而已。",
      酉: "太阴居酉曰闭户:闭户观书雅称士人之政，酉乃太阴之本家，阴好静，故闭户。安且吉也。",
      戌: "太阴居戌曰被察:被察兮当忧怪异，盖太阴之辛酉与戌六害，且河魁刑狱之方，非被纠象乎？欲饰其非则愈怪且异矣，故当忧也。",
      亥: "太阴居亥曰裸形:裸形伏枕盗贼口舌忧惊，亥乃夜深就榻，有裸形之象。并主忧疑口舌盗贼。",
    },
    后: {
      子: "天后居子曰守闺:守闺治事动止多宜，天后，妇人之象也，壬子乃天后之本家，故象守闺阁也，动止相宜，得其道之正也。如当旺相，其庆深矣。",
      丑: "天后居丑曰偷窥:悚惧惊惶缘为偷窥沐浴，以天后之子与丑六合也，有私匿之情，窥之恐人知，是以偷窥。有惧疑之心，故曰悚惧惊惶。",
      寅: "天后居寅曰理发:优游闲暇盖因理发修容，平旦而早起，理发时也。非不遂也，且水与木金不克，故主优游闲暇，乐其平和也。",
      卯: "天后居卯曰临门:倚户临门好淫未足，以秽污之神而入卯酉之私门，非淫奔之象乎？除奸私之外而正大之举反见为殃。",
      辰: "天后居辰曰毁妆:裸体毁妆不悲哭而羞辱，辰为水之克贼，天后至此而毁妆，形体裸露而见伤，毁妆易容而不饰，非羞辱而何也。占得此者悲灾必矣。",
      巳: "天后居巳曰裸体:裸体毁妆不悲哭而羞辱，壬子遇巳，有露暴之伤，刑克之地，故曰裸体。占得此者悲灾必矣。",
      午: "天后居午曰伏枕:褰帷伏枕非叹息而呻吟，午乃昼长午寐之时，故曰伏枕。卧而不快，故曰叹息呻吟，非病即事不遂也。",
      未: "天后居未曰沐浴:悚惧惊惶缘为偷窥沐浴，未有井宿，而壬子水入之有浴之象，浴则畏人至矣。有惧疑之心，故曰悚惧惊惶。",
      申: "天后居申曰修容:优游闲暇盖因理发修容，申哺而容残妆褪时也，故有理发修容之义。非不遂也，且水与木金不克，故主优游闲暇，乐其平和也。",
      酉: "天后居酉曰倚户:倚户临门好淫未足，以秽污之神而入卯酉之私门，非淫奔之象乎？除奸私之外而正大之举反见为殃。",
      戌: "天后居戌曰褰帷:褰帷伏枕非叹息而呻吟，盖戌土克水病之象也，丑戌昏黑之时，有褰帷之象。卧而不快，故曰叹息呻吟，非病即事不遂也。",
      亥: "天后居亥曰治事:守闺治事动止多宜，天后，妇人之象也，亥乃干健自强不息之地，有治事持家克勤之道也。动止相宜，得其道之正也。如当旺相，其庆深矣。",
    },
  }[神][支];
}

function shenZhiName(神, 支) {
  // 步骤1：验证输入有效性
  const 所有神 = [
    "贵",
    "蛇",
    "雀",
    "合",
    "勾",
    "青",
    "空",
    "虎",
    "常",
    "玄",
    "阴",
    "后",
  ];
  const 所有支 = [
    "子",
    "丑",
    "寅",
    "卯",
    "辰",
    "巳",
    "午",
    "未",
    "申",
    "酉",
    "戌",
    "亥",
  ];

  if (!所有神.includes(神)) {
    return `无效的"神"参数：${神}，可选值：${所有神.join("、")}`;
  }
  if (!所有支.includes(支)) {
    return `无效的"支"参数：${支}，可选值：${所有支.join("、")}`;
  }

  // 步骤2：获取对应文本
  const content = shenZhiKeYing(神, 支);

  // 步骤3：提取曰后两字符
  const 曰索引 = content.indexOf("曰");
  if (曰索引 === -1) {
    return `文本中未找到"曰"字：${content.slice(0, 20)}...`;
  }

  // 步骤4：返回结果
  const name = content.slice(曰索引 + 1, 曰索引 + 3);
  return {
    shen: 神,
    zhi: 支,
    content: content,
    name: name,
  };
}
export {
  dipan, initSiKe, getLiuRenShenKeOptions
  , shenZhiName,
shenZhiKeYing
 };
